package cn.antia.cwin.db;

import cn.antia.db.JdbcSql;
import cn.antia.cwin.Cele;

import java.util.List;
import java.util.Map;

/**
 * User: xiao
 * Date: 2008-7-13
 * Time: 20:14:44
 */
public interface CwinSQLGene {
    /**
	 * 取得SQL，根据整形ID查询
	 * @param table t
	 * @param id		主键
	 * @return sql
	 * @throws cn.antia.cep.db.DBException
	 */
	public String getSql (String table,int id);
	/**
	 * 取得查询记录数的SQL
	 * @param table		表名
	 * @param conditions	条件
	 * @return	JdbcSql
	 * @ e
	 */
	public JdbcSql findRecordCount(String table, Map<Cele,Object> conditions);
	/**
	 * 返回带有占位符的SQL语句
	 * @param table			表名
	 * @param conditions	查询条件
	 * @return	sql
	 * @
	 */
	public JdbcSql findSql(String table,Map<Cele,Object> conditions);
    
    public JdbcSql findSql(String table,Map<Cele,Object> conditions,String orderField,boolean  isAsc,int start,int end);

	public JdbcSql findSqlPage(String table,Map<Cele,Object> conditions,String orderField,boolean isAsc,int page,int pageSize);

    /**
	 * 返回带有占位符的SQL语句(带有指定的要查询的字段)
	 * @param table		表
	 * @param fields	要查询的字段
	 * @param conditions	条件
	 * @return	sql
	 */
	public JdbcSql findSql(String table,List<String> fields,Map<Cele,Object> conditions);

    public JdbcSql findSqlPage(String table,List<String> fields,Map<Cele,Object> conditions,String orderField,boolean isAsc,int page,int pageSize);

    public JdbcSql findSql(String table,List<String> fields,Map<Cele,Object> conditions,String orderField,boolean  isAsc,int start,int end);

    /**
	 * 插入一条数据
	 * @param table		表名
	 * @param elements	数据
	 * @return	sql
	 * @
	 */
	public JdbcSql insertSql(String table,Map<Cele,Object> elements);
	/**
	 * 生成SQL：更新一条数据
	 * @param table		表名
	 * @param elements		数据
	 * @return
	 * @
	 */
	public JdbcSql updateSql(String table,Map<Cele,Object> elements);
	/**
	 * 删除
	 * @param table			表
	 * @param conditions	删除条件
	 * @return	sql
	 * @
	 */
	public JdbcSql deleteSql(String table,Map<Cele,Object> conditions);
	/**
	 * 删除，根据主键删除
	 * @param table table
	 * @param id key value
	 * @return sql
	 */
	public String deleteSql(String table,int id);

    /**
     * 取得where条件
     * @param conditions conditions
     * @return jdbcsql
     */
    public JdbcSql getConditionSql(Map<Cele,Object> conditions);
}
